The present invention is directed to a method for transmitting data via a number of interfaces arranged in parallel, whereby each interface comprises a receiver unit for receiving data packets and for intermediately storing these data packets and comprises a transmitter unit for sending data packets.
In order to enable data traffic between a number of communication units, interfaces are provided between these communication units. Such interfaces respectively comprise a receiver unit that receives data packets of a communication unit and further comprises a transmitter unit that sends the received data packets to a different communication unit. Further, means for intermediate storage of data packets are provided in the interface because of different degrees of data incidence at the interface and due to a limited transmission capacity of the interface.
Each interface must be able to transmit high data rates of up to more than 10 Mbit/s. Neither a data loss nor a noticeable delay in the data transmission dare thereby occur.
In order to meet these demands, a buffer memory of a specific, defined size was previously disclosed for each interface. The size of the buffer memory was dimensioned such that, even given an extremely great data incidence at the receiver unit of the respective interface, the received data packets could always be intermediately stored until they had been sent by a transmitter unit of an interface. Since the buffer memories of the respective interfaces are statically allocated, if data packets that are stored in the buffer memory of the receiver unit of an interface are to be sent by the transmitter unit of a different interface, a copy onto the buffer memory of a different interface from the buffer memory of an interface must be made before the transmission by the transmitter unit of the other interface.
This known solution for the transmission of data exhibits the following disadvantages: the total buffer memory space made available is very inefficiently utilized. For example, relatively low data transmission rates can usually arise at a first interface, by contrast whereto extremely high data transmission rates usually arise at a second interface. When the same buffer memory space is always made available to each interface in this case, the buffer memory space of the first interface will usually be empty, resulting in a waste of memory space. Even when, however, a buffer memory of a smaller size is made available to the first interface in such a case, this possibility is inflexible and can lead to problems when, for example, an unusually high data occurrence arises by way of exception at the first interface. In such a case, the first interface cannot intermediately store all arising data, so that data loss occurs.
An object of the present invention is to offer a method for transmitting data via a number of interfaces arranged in parallel wherein a data loss can be prevented and, simultaneously, the buffer memory space made available for the interfaces is efficiently and flexibly utilized.
This object is achieved in accordance with the invention is a method for transmitting data via a number of interfaces arranged parallel that respectively comprise a receiver unit for receiving data packets and for intermediately storing these data packets and comprise a transmitter unit for sending data packets, wherein an overall buffer memory is provided for the number of interfaces. The method comprises the following steps: buffer memory capacity of the overall buffer memory is allocated to the receiver unit of each interface in an initialization; a data packet is transmitted to a receiver unit of an interface by a communication unit. The data packet transmitted to a receiver unit is intermediately stored in the buffer memory location allocated to the receiver unit, and a further buffer memory location is requested at a memory location manager. The further, requested buffer memory location is allocated to the requesting receiver unit by the memory location manager. The buffer memory location allocation is transmitted to a transmitter unit. The intermediately stored data packet is sent from this transmitter unit. Subsequently, the buffer memory location of the transmitted data packet is released, so that this buffer memory location of the overall buffer memory can be re-allocated by the memory location manager.
What is advantageous about the inventive method is that the buffer memory location allocated to each interface is dynamically and automatically adapted to the given conditions. Whenever a receiver unit makes use of buffer memory space, this receiver unit requests further buffer memory capacity. As a result thereof, the buffer memory space made available at the initialization can be minimized for the receiver unit, since, if this receiver unit must receive a greater amount of data, it has further memory space allocated to it. Since, further, the receiver and transmitter units of each interface access an overall buffer memory, data packets, which are received by the receiver unit of an interface and are to be sent by a transmitter unit of a different interface, no longer need to be copied between different buffer memories. A possible source of error is thereby suppressed. Further, a loss of data given an extremely high data occurrence at the receiver unit of an interface is largely precluded, since this receiver unit can theoretically make use of the entire buffer memory capacity that is provided for all interfaces.
Advantageously, a specific, minimum size of free buffer memory capacity can be allocated to each receiver unit at any time. This assures that each receiver unit always has a certain reserve of free buffer memory capacity.
In a further embodiment of the invention, the overall buffer memory is divided into overall buffer memory parcels, whereby one or more overall buffer memory parcels are respectively allocated to the receiver units.
Further, the receiver units can comprise pointer lists that contain the allocated buffer memory location and in which a pointer that indicates where the intermediately stored data packet is stored in the overall buffer memory is entered in the buffer memory location given intermediate storage of the data packet transmitted to a receiver unit.
What is advantageous about this embodiment is that the division into parcels simplifies the memory location manager. Further, the concept of pointer lists for the receiver units is advantageous in that the receiver units only contain information about the memory capacity allocated to them and the addresses of the intermediately stored data packets.
Further, the transmitter units can also comprise pointer lists into which the buffer memory space allocation transmitted from the receiver unit is entered. What is advantageous about this is that the receiver unit only has to transmit the list entry with the address of the intermediately stored data packet to the transmitter unit and not the data packets themselves.
Advantageously, the pointer lists contain status markers in addition to each pointer with information about a status of segments of the list to which the pointer points, and contain a length indicator that indicates the length of the intermediately stored data to which the pointer points.
Given a division of the overall buffer memory capacity into parcels, the size of a data packet can be dimensioned such that it can only be intermediately stored in a number of overall buffer memory parcels. In such a case, the buffer memory space allocation of the parcels occupied firs: is only transmitted to the transmitter unit when all data packets of the data packet covering a number of parcels have been received by the receiver unit. Since the information about the size of the data packet is always only contained at the end in data packets, the receiver unit can only decide whether it has completely received the data packet after reception of this last part of the data packet. If the receiver unit already transmits the first part of the data packet in the first parcels to the transmitter unit after the intermediate storage of this first part, a correction would be extremely difficult given an incomplete reception, which could only be identified by the receiver unit after reception of the complete data packet, since parts of the data packet have already been sent to the transmitter unit and have already potentially been sent from the latter.
Further, the memory capacity manager can comprise occupancy lists that contain information about the occupation of the overall buffer memory parcels of the overall buffer memory. As a result of such occupancy lists, it becomes simpler for the memory location manager to identify location and size of the free memory capacity of the overall buffer memory.
If the transmission of the buffer memory capacity allocation from a receiver unit of an interface to a specific transmitter unit is not possible, the buffer memory capacity allocation of this receiver unit is given back to the memory location manager and is entered into a FIFO list in the memory location manager in an embodiment of the present invention. After a transmission to the specific transmitter unit is possible again, the memory location manager transmits the buffer memory capacity allocation to this transmitter unit from the FIFO list.
A case can occur in the data transmission that a specific transmitter unit is blocked but other transmitter units can send. When a receiver unit receives data packets both for the blocked transmitter unit as well as for transmitter units that are not blocked, a problem arises that the data packets for the blocked transmitter unit backup in the transmitter units. Due to the rerouting of the buffer memory space allocation of these data packets intended for the blocked transmitter unit, each receiver unit that wishes to transmit buffer memory space allocations to the blocked transmitter unit is relieved. At the same time, it is assured with the memory location manager that, when the previously blocked transmitter unit is again ready to transmit, the memory capacity allocation for these data packets is transmitted to this transmitter unit in sequence.
The memory location manager can have provided a FIFO list for each interface, whereby this always either comprises a specific buffer memory location or the buffer memory location for each FIFO list can be allocated variably and dependent on the corresponding need of the respective FIFO list for buffer memory capacity.
These and other features of the invention(s) will become clearer with reference to the following detailed description of the presently preferred embodiments and accompanied drawings.